//
// Created by denglibin on 2021/4/8.
//

#ifndef OPENGL_MINGW_SHADER_H
#define OPENGL_MINGW_SHADER_H
#include "glad/glad.h"
#include <glm.hpp>
#include <string>
using namespace std;
/**
 * 着色器程序
 */
class Shader {
public:
    GLuint shaderProgram; //着色器程序对象id
    /**
     * 构造函数
     * @param vertexPath 顶点着色器源码文件路径
     * @param fragmentPath 片段着色器源码文件路径
     */
    Shader(string &vertexPath, string &fragmentPath);
    /**
     * 激活着色器程序
     */
    void use();
    // uniform工具函数
    void setBool(const std::string &name, bool value) const;
    void setInt(const std::string &name, int value) const;
    void setFloat(const std::string &name, float value) const;
    void setVec3(const std::string &name, glm::vec3& v) const;
    void setMatrix4fv(const std::string &name, glm::mat4& m) const;
};


#endif //OPENGL_MINGW_SHADER_H
